package books.in_action.lambda

/**
 * 序列
 */
fun main(args: Array<String>) {

    //需求 ，求出名字小于长度4的人名集合
    val listName = listOf(Person(1, "Android"), Person(2, "py"),
            Person(3, "ios"), Person(4, "javascript"))

    /**
     * 高效，逐个元素先过滤，条件不允许的元素不会到map映射
     */
    listName.asSequence()
            .filter{it.name.length < 4}  //中间
            .map{it.name}  //中间
            .toList()  //尾端
            .also(::println)

    //序列的创建方式2  ，只有调用sum()  延期操作才会执行
    val sequence = generateSequence(0) { it + 1 }
    sequence.takeWhile {
        println(it)
        it < 10
    }.sum().also(::println)

}